<?php
namespace Part;
/**
 * generuje kod HTML dla pojedynczego ogłoszenia
 */
class CategoryTree extends \Part {
	/**
	 * miejsce na dane
	 * @var array
	 * @access private
	 */
	private $data;
	/**
	 * konstruktor
	 * @param array tablica z danymi do wyświetlenia, muszą być zdefiniowane pola title, description i fullDescription
	 */
	public function __construct ($data) {
		$this->data = $data;
		parent::__construct();
		$log = new \Log('Part\CategoryTree::__construct');
		$log->add('<pre>'.print_r($this->data, true).'</pre>');
	}
	/**
	 * dziedziczony po \Part, generuje kod HTML części
	 */
	protected function generateHTML () {
		$t = '<ul>';
		for($i=0, $l=count($this->data->getSubcategories()); $i<$l; $i++) {
			$t .= $this->getSubtreeHTML($this->data->getSubcategories()[$i]);
		}
		$t .= '</ul>';
		$this->html .= $t;
		$log = new \Log('Part\CategoryTree::generateHTML');
		$log->add('<pre>html: '.print_r($this->html, true).'</pre>');
	}
	private function getSubtreeHTML ($node) {
		$t = '<li>'.$node->getName();
		if($node->getSubcategories()) {
			$t .= '<ul>';
			for($i=0, $l=count($node->getSubcategories()); $i<$l; $i++) {
				$t .= $this->getSubtreeHTML($node->getSubcategories()[$i]);
			}
			$t .= '</ul>';
		}
		$t .= '</li>';
		return $t;
	}
}
?>